#include "../../lv_examples.h"
#if LV_USE_BTN && LV_BUILD_EXAMPLES
#include <stdio.h>

static void event_handler(lv_event_t * e)
{

    // 获取当前触发的事件类型
    lv_event_code_t code = lv_event_get_code(e);


    // 判断是否为点击事件
    if (code == LV_EVENT_CLICKED )
    {
        printf("__%d__\n" , __LINE__  );

        // 通过事件对象 e 来获取对应的用户传入的参数
        int * data =  lv_event_get_user_data(e);
        if (data )
        {
            printf("__%d__[%d]\n" , __LINE__ , * data  );
        }
        
    }
    



    

    // if(code == LV_EVENT_CLICKED) {
    //     LV_LOG_USER("Clicked");
    // }
    // else if(code == LV_EVENT_VALUE_CHANGED) {
    //     LV_LOG_USER("Toggled");
    // }
}

void lv_example_btn_1(void)
{
    lv_obj_t * label;

    // 创建一个btn控件
    // lv_scr_act() 获取并返回当前活跃的屏幕
    // 因此bnt按钮实际上是在当前屏幕上创建的
    lv_obj_t * btn1 = lv_btn_create(lv_scr_act());

    // 设置对齐方式，以及偏移量
    lv_obj_align(btn1, LV_ALIGN_TOP_MID, 0, 5);
    // 设置宽高大小
    lv_obj_set_size( btn1 , 200 , 80 );

    // 给对象btn添加一个事件回调函数
    // LV_EVENT_CLICKED 触发回调的事件设置为点击事件
    static int Num = 123 ; // 普通遍历会随着函数结束而释放
    // 因此需要作为参数传递给回调函数就必须保证他的声明周期能覆盖回调函数
    // 静态 、 堆
    lv_obj_add_event_cb(btn1, event_handler, LV_EVENT_CLICKED, &Num );

    label = lv_label_create(btn1);
    lv_label_set_text(label, "Button");
    lv_obj_center(label);

    lv_obj_t * btn2 = lv_btn_create(lv_scr_act());
    lv_obj_add_event_cb(btn2, event_handler, LV_EVENT_ALL, NULL);
    lv_obj_align(btn2, LV_ALIGN_CENTER, 0, 40);
    lv_obj_add_flag(btn2, LV_OBJ_FLAG_CHECKABLE);
    lv_obj_set_height(btn2, LV_SIZE_CONTENT);

    label = lv_label_create(btn2);
    lv_label_set_text(label, "Toggle");
    lv_obj_center(label);
}
#endif
